package com.bjpowernode.ba01;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
 * Aspect 来自AspectJ框架
 * 位置：类的上面
 * 作用：表示当前类是切面类，用来增加功能的
 *
 */
@Component
@Aspect
public class CreateAspect {
	//自定义方法，增加功能
	
	
	@Before(value="execution(* com.bjpowernode..create*(..))")
	public void myBefore(){
		//功能增强的代码
		System.out.println("create进程将要开始");
	}
	
	/**
	 * 有参数的方法，注意切点表达式方法名参数标注..
	 * @param jp
	 */
	@Before(value="execution(* com.bjpowernode..create*(..))")
	public void getArgsInfo(JoinPoint jp){
		//获取方法的签名（方法的定义）
		System.out.println("方法的定义："+jp.getSignature());
		//获取切入点方法的参数列表
		Object args [] = jp.getArgs();
		System.out.println("参数的个数："+args.length);
		
		for (Object object : args) {
			System.out.println(object.getClass());
		}
		
		//功能增强的代码
//		System.out.println("前置通知：在目标方法之前先执行的代码");
	}
}
